home *** CD-ROM | disk | FTP | other *** search
MacBinary | 1992-04-27 | 7.6 KB | [TEXT/MPS ] |
open in:
MacOS 8.1
|
Win98
|
DOS
view JSON data
|
view as text
This file was processed as: MacBinary
(archive/macBinary).
You can browse this item here: Parser.cp
Confidence | Program | Detection | Match Type | Support
|
---|
10%
| dexvert
| MacBinary (archive/macBinary)
| fallback
| Supported |
1%
| dexvert
| MS-DOS Code Page Info (other/dosCodePage)
| ext
| Unsupported |
1%
| dexvert
| Text File (text/txt)
| fallback
| Supported |
100%
| file
| MacBinary II, inited, Mon Apr 27 21:06:32 1992, modified Mon Apr 27 21:06:32 1992, creator 'MPS ', type ASCII, 6958 bytes "Parser.cp" , at 0x1bae 580 bytes resource
| default (weak)
| |
99%
| file
| data
| default
| |
74%
| TrID
| Macintosh plain text (MacBinary)
| default
| |
25%
| TrID
| MacBinary 2
| default (weak)
| |
100%
| siegfried
| fmt/1762 MacBinary (II)
| default
| |
100%
| lsar
| MacBinary
| default
|
|
id metadata |
---|
key | value |
---|
macFileType | [TEXT] |
macFileCreator | [MPS ] |
hex view+--------+-------------------------+-------------------------+--------+--------+
|00000000| 00 09 50 61 72 73 65 72 | 2e 63 70 00 00 00 00 00 |..Parser|.cp.....|
|00000010| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000020| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000030| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000040| 00 54 45 58 54 4d 50 53 | 20 01 00 00 00 00 00 00 |.TEXTMPS| .......|
|00000050| 00 00 00 00 00 1b 2e 00 | 00 02 44 a6 22 55 98 a6 |........|..D."U..|
|00000060| 22 55 98 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |"U......|........|
|00000070| 00 00 00 00 00 00 00 00 | 00 00 81 81 20 e5 00 00 |........|.... ...|
|00000080| 23 69 66 6e 64 65 66 20 | 5f 5f 50 41 52 53 45 52 |#ifndef |__PARSER|
|00000090| 5f 5f 0d 23 69 6e 63 6c | 75 64 65 20 22 50 61 72 |__.#incl|ude "Par|
|000000a0| 73 65 72 2e 68 22 0d 23 | 65 6e 64 69 66 09 0d 0d |ser.h".#|endif...|
|000000b0| 23 69 66 6e 64 65 66 20 | 5f 5f 50 41 52 53 45 52 |#ifndef |__PARSER|
|000000c0| 41 43 54 49 4f 4e 53 5f | 5f 0d 23 69 6e 63 6c 75 |ACTIONS_|_.#inclu|
|000000d0| 64 65 20 22 50 61 72 73 | 65 72 41 63 74 69 6f 6e |de "Pars|erAction|
|000000e0| 73 2e 68 22 0d 23 65 6e | 64 69 66 09 0d 0d 23 69 |s.h".#en|dif...#i|
|000000f0| 66 6e 64 65 66 20 5f 5f | 43 53 43 41 4e 4e 45 52 |fndef __|CSCANNER|
|00000100| 5f 5f 0d 23 69 6e 63 6c | 75 64 65 20 22 43 53 63 |__.#incl|ude "CSc|
|00000110| 61 6e 6e 65 72 2e 68 22 | 0d 23 65 6e 64 69 66 09 |anner.h"|.#endif.|
|00000120| 0d 0d 23 69 66 6e 64 65 | 66 20 5f 5f 46 4f 52 4d |..#ifnde|f __FORM|
|00000130| 41 54 54 49 4e 47 5f 5f | 0d 23 69 6e 63 6c 75 64 |ATTING__|.#includ|
|00000140| 65 20 22 46 6f 72 6d 61 | 74 74 69 6e 67 2e 68 22 |e "Forma|tting.h"|
|00000150| 0d 23 65 6e 64 69 66 09 | 0d 0d 23 69 66 6e 64 65 |.#endif.|..#ifnde|
|00000160| 66 20 5f 5f 43 44 45 4e | 54 5f 5f 0d 23 69 6e 63 |f __CDEN|T__.#inc|
|00000170| 6c 75 64 65 20 22 63 64 | 65 6e 74 2e 68 22 0d 23 |lude "cd|ent.h".#|
|00000180| 65 6e 64 69 66 09 0d 0d | 23 69 66 6e 64 65 66 20 |endif...|#ifndef |
|00000190| 5f 5f 53 54 41 43 4b 5f | 5f 0d 23 69 6e 63 6c 75 |__STACK_|_.#inclu|
|000001a0| 64 65 20 22 53 74 61 63 | 6b 2e 68 22 0d 23 65 6e |de "Stac|k.h".#en|
|000001b0| 64 69 66 09 0d 0d 23 69 | 66 6e 64 65 66 20 5f 5f |dif...#i|fndef __|
|000001c0| 4e 45 57 5f 5f 0d 23 69 | 6e 63 6c 75 64 65 20 3c |NEW__.#i|nclude <|
|000001d0| 6e 65 77 2e 68 3e 0d 23 | 65 6e 64 69 66 0d 0d 23 |new.h>.#|endif..#|
|000001e0| 69 66 6e 64 65 66 20 5f | 5f 53 54 52 49 4e 47 5f |ifndef _|_STRING_|
|000001f0| 5f 0d 23 69 6e 63 6c 75 | 64 65 20 3c 73 74 72 69 |_.#inclu|de <stri|
|00000200| 6e 67 2e 68 3e 0d 23 65 | 6e 64 69 66 0d 0d 0d 2f |ng.h>.#e|ndif.../|
|00000210| 2f b5 20 20 20 50 61 72 | 73 65 72 3a 3a 49 50 61 |/. Par|ser::IPa|
|00000220| 72 73 65 72 0d 23 70 72 | 61 67 6d 61 20 73 65 67 |rser.#pr|agma seg|
|00000230| 6d 65 6e 74 20 50 61 72 | 73 65 72 0d 73 68 6f 72 |ment Par|ser.shor|
|00000240| 74 20 50 61 72 73 65 72 | 3a 3a 49 50 61 72 73 65 |t Parser|::IParse|
|00000250| 72 28 29 0d 7b 0d 09 73 | 68 6f 72 74 20 65 72 72 |r().{..s|hort err|
|00000260| 20 3d 20 66 53 74 61 63 | 6b 2e 49 53 74 61 63 6b | = fStac|k.IStack|
|00000270| 28 31 30 30 2c 20 35 30 | 29 3b 0d 0d 09 69 66 20 |(100, 50|);...if |
|00000280| 28 65 72 72 20 21 3d 20 | 6e 6f 45 72 72 29 0d 09 |(err != |noErr)..|
|00000290| 09 72 65 74 75 72 6e 20 | 28 65 72 72 29 3b 0d 0d |.return |(err);..|
|000002a0| 09 66 53 74 61 63 6b 2e | 53 65 74 45 6d 70 74 79 |.fStack.|SetEmpty|
|000002b0| 49 74 65 6d 28 26 67 50 | 72 73 44 65 63 6c 4c 69 |Item(&gP|rsDeclLi|
|000002c0| 73 74 29 3b 0d 09 53 68 | 69 66 74 28 26 67 50 72 |st);..Sh|ift(&gPr|
|000002d0| 73 44 65 63 6c 4c 69 73 | 74 29 3b 0d 09 66 49 74 |sDeclLis|t);..fIt|
|000002e0| 65 6d 49 6e 64 65 78 20 | 3d 20 30 3b 0d 09 66 52 |emIndex |= 0;..fR|
|000002f0| 65 63 75 72 73 69 6f 6e | 43 6f 75 6e 74 20 3d 20 |ecursion|Count = |
|00000300| 30 3b 0d 09 66 44 65 70 | 74 68 20 3d 20 30 3b 0d |0;..fDep|th = 0;.|
|00000310| 09 44 65 62 75 67 50 61 | 72 73 65 72 28 66 61 6c |.DebugPa|rser(fal|
|00000320| 73 65 29 3b 0d 0d 09 72 | 65 74 75 72 6e 20 28 6e |se);...r|eturn (n|
|00000330| 6f 45 72 72 29 3b 0d 7d | 0d 0d 0d 0d 2f 2f 20 b5 |oErr);.}|....// .|
|00000340| 20 20 20 50 61 72 73 65 | 72 3a 3a 49 50 61 72 73 | Parse|r::IPars|
|00000350| 65 72 0d 23 70 72 61 67 | 6d 61 20 73 65 67 6d 65 |er.#prag|ma segme|
|00000360| 6e 74 20 50 61 72 73 65 | 72 0d 73 68 6f 72 74 20 |nt Parse|r.short |
|00000370| 50 61 72 73 65 72 3a 3a | 49 50 61 72 73 65 72 28 |Parser::|IParser(|
|00000380| 63 6f 6e 73 74 20 50 61 | 72 73 65 72 20 2a 61 50 |const Pa|rser *aP|
|00000390| 61 72 73 65 72 29 0d 7b | 0d 09 73 68 6f 72 74 20 |arser).{|..short |
|000003a0| 65 72 72 20 3d 20 66 53 | 74 61 63 6b 2e 49 53 74 |err = fS|tack.ISt|
|000003b0| 61 63 6b 28 26 61 50 61 | 72 73 65 72 2d 3e 66 53 |ack(&aPa|rser->fS|
|000003c0| 74 61 63 6b 29 3b 0d 0d | 09 69 66 20 28 65 72 72 |tack);..|.if (err|
|000003d0| 20 21 3d 20 6e 6f 45 72 | 72 29 0d 09 09 72 65 74 | != noEr|r)...ret|
|000003e0| 75 72 6e 20 28 65 72 72 | 29 3b 0d 0d 09 66 46 6f |urn (err|);...fFo|
|000003f0| 72 6d 61 74 20 3d 20 61 | 50 61 72 73 65 72 2d 3e |rmat = a|Parser->|
|00000400| 66 46 6f 72 6d 61 74 3b | 0d 09 66 49 74 65 6d 49 |fFormat;|..fItemI|
|00000410| 6e 64 65 78 20 3d 20 61 | 50 61 72 73 65 72 2d 3e |ndex = a|Parser->|
|00000420| 66 49 74 65 6d 49 6e 64 | 65 78 3b 0d 09 66 44 65 |fItemInd|ex;..fDe|
|00000430| 62 75 67 50 61 72 73 65 | 72 20 3d 20 61 50 61 72 |bugParse|r = aPar|
|00000440| 73 65 72 2d 3e 66 44 65 | 62 75 67 50 61 72 73 65 |ser->fDe|bugParse|
|00000450| 72 3b 0d 0d 09 72 65 74 | 75 72 6e 20 28 6e 6f 45 |r;...ret|urn (noE|
|00000460| 72 72 29 3b 0d 7d 0d 0d | 0d 0d 2f 2f b5 20 20 20 |rr);.}..|..//. |
|00000470| 50 61 72 73 65 72 3a 3a | 7e 50 61 72 73 65 72 0d |Parser::|~Parser.|
|00000480| 23 70 72 61 67 6d 61 20 | 73 65 67 6d 65 6e 74 20 |#pragma |segment |
|00000490| 50 61 72 73 65 72 0d 50 | 61 72 73 65 72 3a 3a 7e |Parser.P|arser::~|
|000004a0| 50 61 72 73 65 72 28 29 | 0d 7b 0d 7d 0d 0d 0d 2f |Parser()|.{.}.../|
|000004b0| 2f b5 20 20 20 50 61 72 | 73 65 72 3a 3a 50 61 72 |/. Par|ser::Par|
|000004c0| 73 65 0d 23 70 72 61 67 | 6d 61 20 73 65 67 6d 65 |se.#prag|ma segme|
|000004d0| 6e 74 20 50 61 72 73 65 | 72 0d 42 6f 6f 6c 65 61 |nt Parse|r.Boolea|
|000004e0| 6e 20 50 61 72 73 65 72 | 3a 3a 50 61 72 73 65 28 |n Parser|::Parse(|
|000004f0| 53 79 6e 74 61 63 74 69 | 63 20 2a 61 54 6f 6b 65 |Syntacti|c *aToke|
|00000500| 6e 29 0d 7b 0d 09 2f 2a | 0d 09 2a 2a 20 49 66 20 |n).{../*|..** If |
|00000510| 74 68 69 73 20 69 73 20 | 61 20 63 6f 6d 6d 65 6e |this is |a commen|
|00000520| 74 2c 20 68 61 6e 64 6c | 65 20 69 74 20 69 6d 6d |t, handl|e it imm|
|00000530| 65 64 69 61 74 65 6c 79 | 0d 09 2a 2f 0d 09 69 66 |ediately|..*/..if|
|00000540| 20 28 61 54 6f 6b 65 6e | 2d 3e 49 73 4c 65 78 28 | (aToken|->IsLex(|
|00000550| 29 29 20 7b 0d 09 09 2f | 2f 20 46 6c 75 73 68 20 |)) {.../|/ Flush |
|00000560| 61 6e 79 20 69 64 65 6e | 74 69 66 69 65 72 73 20 |any iden|tifiers |
|00000570| 77 68 69 63 68 20 68 61 | 76 65 6e 27 74 20 62 65 |which ha|ven't be|
|00000580| 65 6e 20 68 61 6e 64 6c | 65 64 20 79 65 74 2e 0d |en handl|ed yet..|
|00000590| 09 09 69 66 20 28 61 54 | 6f 6b 65 6e 2d 3e 49 73 |..if (aT|oken->Is|
|000005a0| 53 65 70 61 72 61 74 6f | 72 28 29 29 0d 09 09 09 |Separato|r())....|
|000005b0| 69 66 20 28 54 6f 70 49 | 74 65 6d 28 29 2d 3e 54 |if (TopI|tem()->T|
|000005c0| 79 70 65 28 29 20 3d 3d | 20 6b 53 50 72 73 5f 49 |ype() ==| kSPrs_I|
|000005d0| 64 29 0d 09 09 09 09 69 | 66 20 28 21 50 61 72 73 |d).....i|f (!Pars|
|000005e0| 65 28 29 29 0d 09 09 09 | 09 09 72 65 74 75 72 6e |e())....|..return|
|000005f0| 20 28 66 61 6c 73 65 29 | 3b 0d 0d 09 09 2f 2a 0d | (false)|;..../*.|
|00000600| 09 09 2a 2a 20 48 61 6e | 64 6c 65 20 61 6e 79 20 |..** Han|dle any |
|00000610| 73 70 65 63 69 61 6c 20 | 66 6f 72 6d 73 20 68 65 |special |forms he|
|00000620| 72 65 2c 20 74 68 6f 73 | 65 20 66 6f 72 6d 73 20 |re, thos|e forms |
|00000630| 77 68 69 63 68 20 61 72 | 65 20 75 6e 61 6d 62 69 |which ar|e unambi|
|00000640| 67 75 6f 75 73 20 61 6e | 64 0d 09 09 2a 2a 20 68 |guous an|d...** h|
|00000650| 61 76 65 20 62 75 74 20 | 61 20 73 69 6e 67 6c 65 |ave but |a single|
|00000660| 20 70 61 72 73 65 2e 20 | 20 49 6e 20 70 61 72 74 | parse. | In part|
|00000670| 69 63 75 6c 61 72 2c 20 | 69 64 73 20 63 61 6e 20 |icular, |ids can |
|00000680| 62 65 63 6f 6d 65 20 70 | 61 72 74 20 6f 66 0d 09 |become p|art of..|
|00000690| 09 2a 2a 20 6f 70 65 72 | 61 74 6f 72 73 20 28 63 |.** oper|ators (c|
|000006a0| 68 65 63 6b 20 69 66 20 | 74 68 65 20 74 6f 70 20 |heck if |the top |
|000006b0| 69 74 65 6d 20 6f 6e 20 | 74 68 65 20 70 61 72 73 |item on |the pars|
|000006c0| 65 20 73 74 61 63 6b 20 | 69 73 20 61 20 44 65 63 |e stack |is a Dec|
|000006d0| 6c 5f 4f 70 65 72 61 74 | 6f 72 29 0d 09 09 2a 2a |l_Operat|or)...**|
|000006e0| 20 6f 72 20 70 61 72 73 | 65 64 20 69 64 73 20 28 | or pars|ed ids (|
|000006f0| 63 68 65 63 6b 20 69 66 | 20 74 68 65 20 74 6f 70 |check if| the top|
|00000700| 20 69 74 65 6d 73 20 69 | 73 20 61 20 50 72 73 5f | items i|s a Prs_|
|00000710| 49 64 29 2e 0d 09 09 2a | 2f 0d 09 09 73 77 69 74 |Id)....*|/...swit|
|00000720| 63 68 20 28 61 54 6f 6b | 65 6e 2d 3e 54 79 70 65 |ch (aTok|en->Type|
|00000730| 28 29 29 20 7b 0d 09 09 | 63 61 73 65 20 6b 53 4c |()) {...|case kSL|
|00000740| 65 78 5f 44 65 63 6c 4f | 70 65 72 61 74 6f 72 3a |ex_DeclO|perator:|
|00000750| 0d 09 09 09 53 68 69 66 | 74 28 6e 65 77 20 50 72 |....Shif|t(new Pr|
|00000760| 73 44 65 63 6c 4f 70 65 | 72 61 74 6f 72 29 3b 0d |sDeclOpe|rator);.|
|00000770| 09 09 09 62 72 65 61 6b | 3b 0d 0d 09 09 63 61 73 |...break|;....cas|
|00000780| 65 20 6b 53 4c 65 78 5f | 49 64 3a 0d 09 09 09 69 |e kSLex_|Id:....i|
|00000790| 66 20 28 54 6f 70 49 74 | 65 6d 28 29 2d 3e 54 79 |f (TopIt|em()->Ty|
|000007a0| 70 65 28 29 20 3d 3d 20 | 6b 53 50 72 73 5f 44 65 |pe() == |kSPrs_De|
|000007b0| 63 6c 4f 70 65 72 61 74 | 6f 72 29 0d 09 09 09 09 |clOperat|or).....|
|000007c0| 62 72 65 61 6b 3b 0d 09 | 09 09 2f 2f 20 21 21 21 |break;..|..// !!!|
|000007d0| 20 46 41 4c 4c 20 54 48 | 52 4f 55 47 48 20 21 21 | FALL TH|ROUGH !!|
|000007e0| 21 0d 0d 09 09 63 61 73 | 65 20 6b 53 4c 65 78 5f |!....cas|e kSLex_|
|000007f0| 43 6c 61 73 73 43 6f 6c | 6f 6e 3a 0d 09 09 09 2f |ClassCol|on:..../|
|00000800| 2f 20 49 64 65 6e 74 69 | 66 69 65 72 73 20 6d 69 |/ Identi|fiers mi|
|00000810| 67 68 74 20 62 65 20 71 | 75 61 6c 69 66 69 65 64 |ght be q|ualified|
|00000820| 2c 20 65 74 63 2e 0d 09 | 09 09 69 66 20 28 54 6f |, etc...|..if (To|
|00000830| 70 49 74 65 6d 28 29 2d | 3e 54 79 70 65 28 29 20 |pItem()-|>Type() |
|00000840| 21 3d 20 6b 53 50 72 73 | 5f 49 64 29 0d 09 09 09 |!= kSPrs|_Id)....|
|00000850| 09 53 68 69 66 74 28 26 | 67 50 72 73 49 64 29 3b |.Shift(&|gPrsId);|
|00000860| 0d 09 09 09 62 72 65 61 | 6b 3b 0d 0d 09 09 64 65 |....brea|k;....de|
|00000870| 66 61 75 6c 74 3a 0d 09 | 09 09 62 72 65 61 6b 3b |fault:..|..break;|
|00000880| 0d 09 09 7d 0d 09 7d 0d | 0d 09 2f 2a 0d 09 2a 2a |...}..}.|../*..**|
|00000890| 20 44 65 62 75 67 67 69 | 6e 67 20 63 6f 75 6e 74 | Debuggi|ng count|
|000008a0| 65 72 3a 20 70 72 65 76 | 65 6e 74 20 6d 75 6c 74 |er: prev|ent mult|
|000008b0| 69 70 6c 65 20 69 6e 76 | 6f 63 61 74 69 6f 6e 73 |iple inv|ocations|
|000008c0| 20 6f 66 20 74 68 65 20 | 70 61 72 73 65 72 2e 0d | of the |parser..|
|000008d0| 09 2a 2a 20 49 6e 63 72 | 65 6d 65 6e 74 65 64 20 |.** Incr|emented |
|000008e0| 6f 6e 20 65 6e 74 72 79 | 2c 20 64 65 63 72 65 6d |on entry|, decrem|
|000008f0| 65 6e 74 65 64 20 6f 6e | 20 73 75 63 63 65 73 73 |ented on| success|
|00000900| 66 75 6c 20 70 61 72 73 | 65 2e 0d 09 2a 2f 0d 09 |ful pars|e...*/..|
|00000910| 42 6f 6f 6c 65 61 6e 20 | 62 75 6d 70 52 65 63 75 |Boolean |bumpRecu|
|00000920| 72 73 69 6f 6e 43 6f 75 | 6e 74 20 3d 20 28 44 65 |rsionCou|nt = (De|
|00000930| 70 74 68 28 29 20 3e 3d | 20 66 44 65 70 74 68 29 |pth() >=| fDepth)|
|00000940| 3b 0d 09 69 66 20 28 62 | 75 6d 70 52 65 63 75 72 |;..if (b|umpRecur|
|00000950| 73 69 6f 6e 43 6f 75 6e | 74 29 20 7b 0d 09 09 69 |sionCoun|t) {...i|
|00000960| 66 20 28 2b 2b 66 52 65 | 63 75 72 73 69 6f 6e 43 |f (++fRe|cursionC|
|00000970| 6f 75 6e 74 20 3e 3d 20 | 31 30 29 20 7b 0d 09 09 |ount >= |10) {...|
|00000980| 09 66 46 6f 72 6d 61 74 | 2d 3e 46 6c 75 73 68 28 |.fFormat|->Flush(|
|00000990| 29 3b 0d 09 09 09 69 66 | 20 28 66 44 65 62 75 67 |);....if| (fDebug|
|000009a0| 50 61 72 73 65 72 29 0d | 09 09 09 09 44 75 6d 70 |Parser).|....Dump|
|000009b0| 53 74 61 63 6b 28 67 53 | 74 64 65 72 72 29 3b 0d |Stack(gS|tderr);.|
|000009c0| 09 09 09 64 69 61 67 28 | 6b 46 61 74 61 6c 2c 20 |...diag(|kFatal, |
|000009d0| 22 5c 6e 5c 52 65 63 75 | 72 73 69 6f 6e 20 6c 69 |"\n\Recu|rsion li|
|000009e0| 6d 69 74 3a 20 74 6f 6b | 65 6e 20 3d 20 25 73 5c |mit: tok|en = %s\|
|000009f0| 6e 22 2c 20 4e 61 6d 65 | 4f 66 28 61 54 6f 6b 65 |n", Name|Of(aToke|
|00000a00| 6e 2d 3e 54 79 70 65 28 | 29 29 29 3b 0d 09 09 7d |n->Type(|)));...}|
|00000a10| 0d 09 7d 0d 0d 09 2f 2a | 0d 09 2a 2a 20 44 65 73 |..}.../*|..** Des|
|00000a20| 63 65 6e 64 20 74 68 65 | 20 73 74 61 63 6b 20 6c |cend the| stack l|
|00000a30| 6f 6f 6b 69 6e 67 20 66 | 6f 72 20 61 20 74 61 6b |ooking f|or a tak|
|00000a40| 65 72 2e 20 20 49 66 20 | 6f 6e 65 20 69 73 20 66 |er. If |one is f|
|00000a50| 6f 75 6e 64 2c 20 74 68 | 65 6e 0d 09 2a 2a 20 65 |ound, th|en..** e|
|00000a60| 78 69 74 20 74 68 65 20 | 72 6f 75 74 69 6e 65 2e |xit the |routine.|
|00000a70| 20 20 49 66 20 6f 6e 65 | 20 69 73 20 6e 6f 74 20 | If one| is not |
|00000a80| 66 6f 75 6e 64 2c 20 72 | 65 74 75 72 6e 20 66 61 |found, r|eturn fa|
|00000a90| 6c 73 65 2e 0d 09 2a 2f | 0d 09 69 66 20 28 66 44 |lse...*/|..if (fD|
|00000aa0| 65 62 75 67 50 61 72 73 | 65 72 29 20 7b 0d 09 09 |ebugPars|er) {...|
|00000ab0| 64 69 61 67 28 6b 44 65 | 62 75 67 2c 20 22 5c 6e |diag(kDe|bug, "\n|
|00000ac0| 45 6e 74 72 79 20 23 25 | 64 20 50 61 72 73 65 72 |Entry #%|d Parser|
|00000ad0| 3a 3a 50 61 72 73 65 28 | 25 73 29 5c 6e 22 2c 20 |::Parse(|%s)\n", |
|00000ae0| 66 52 65 63 75 72 73 69 | 6f 6e 43 6f 75 6e 74 2c |fRecursi|onCount,|
|00000af0| 20 4e 61 6d 65 4f 66 28 | 61 54 6f 6b 65 6e 2d 3e | NameOf(|aToken->|
|00000b00| 54 79 70 65 28 29 29 29 | 3b 0d 09 7d 0d 0d 09 66 |Type()))|;..}...f|
|00000b10| 6f 72 20 28 69 6e 74 20 | 69 20 3d 20 44 65 70 74 |or (int |i = Dept|
|00000b20| 68 28 29 3b 20 69 2d 2d | 20 3e 20 30 3b 29 20 7b |h(); i--| > 0;) {|
|00000b30| 0d 09 09 53 79 6e 74 61 | 63 74 69 63 20 2a 20 61 |...Synta|ctic * a|
|00000b40| 6e 49 74 65 6d 20 3d 20 | 41 74 28 69 29 3b 0d 0d |nItem = |At(i);..|
|00000b50| 09 09 69 66 20 28 61 6e | 49 74 65 6d 2d 3e 49 73 |..if (an|Item->Is|
|00000b60| 50 72 73 28 29 29 20 7b | 0d 09 09 09 2f 2f 20 50 |Prs()) {|....// P|
|00000b70| 72 65 73 65 72 76 65 20 | 74 68 65 20 69 74 65 6d |reserve |the item|
|00000b80| 20 69 6e 64 65 78 20 61 | 72 6f 75 6e 64 20 63 61 | index a|round ca|
|00000b90| 6c 6c 73 20 74 6f 20 70 | 61 72 73 65 72 73 0d 09 |lls to p|arsers..|
|00000ba0| 09 09 73 68 6f 72 74 20 | 73 61 76 65 64 49 74 65 |..short |savedIte|
|00000bb0| 6d 49 6e 64 65 78 20 3d | 20 66 49 74 65 6d 49 6e |mIndex =| fItemIn|
|00000bc0| 64 65 78 3b 0d 0d 09 09 | 09 66 49 74 65 6d 49 6e |dex;....|.fItemIn|
|00000bd0| 64 65 78 20 3d 20 69 3b | 09 09 09 09 09 09 2f 2f |dex = i;|......//|
|00000be0| 20 4e 6f 74 65 20 74 68 | 69 73 20 69 6e 64 65 78 | Note th|is index|
|00000bf0| 0d 09 09 09 66 44 65 70 | 74 68 20 3d 20 44 65 70 |....fDep|th = Dep|
|00000c00| 74 68 28 29 3b 09 09 09 | 09 09 2f 2f 20 4e 6f 74 |th();...|..// Not|
|00000c10| 65 20 74 68 69 73 20 64 | 65 70 74 68 0d 09 09 09 |e this d|epth....|
|00000c20| 69 66 20 28 28 28 53 79 | 6e 74 61 63 74 69 63 50 |if (((Sy|ntacticP|
|00000c30| 72 73 20 2a 29 61 6e 49 | 74 65 6d 29 2d 3e 41 63 |rs *)anI|tem)->Ac|
|00000c40| 63 65 70 74 28 61 54 6f | 6b 65 6e 2c 20 74 68 69 |cept(aTo|ken, thi|
|00000c50| 73 29 29 20 7b 0d 09 09 | 09 09 66 49 74 65 6d 49 |s)) {...|..fItemI|
|00000c60| 6e 64 65 78 20 3d 20 73 | 61 76 65 64 49 74 65 6d |ndex = s|avedItem|
|00000c70| 49 6e 64 65 78 3b 09 2f | 2f 20 52 65 73 74 6f 72 |Index;./|/ Restor|
|00000c80| 65 0d 09 09 09 09 69 66 | 20 28 62 75 6d 70 52 65 |e.....if| (bumpRe|
|00000c90| 63 75 72 73 69 6f 6e 43 | 6f 75 6e 74 29 0d 09 09 |cursionC|ount)...|
|00000ca0| 09 09 09 2d 2d 66 52 65 | 63 75 72 73 69 6f 6e 43 |...--fRe|cursionC|
|00000cb0| 6f 75 6e 74 3b 0d 0d 09 | 09 09 09 69 66 20 28 66 |ount;...|...if (f|
|00000cc0| 44 65 62 75 67 50 61 72 | 73 65 72 29 20 7b 0d 09 |DebugPar|ser) {..|
|00000cd0| 09 09 09 09 69 66 20 28 | 66 52 65 63 75 72 73 69 |....if (|fRecursi|
|00000ce0| 6f 6e 43 6f 75 6e 74 20 | 3d 3d 20 30 29 0d 09 09 |onCount |== 0)...|
|00000cf0| 09 09 09 09 44 75 6d 70 | 53 74 61 63 6b 28 67 53 |....Dump|Stack(gS|
|00000d00| 74 64 65 72 72 29 3b 0d | 09 09 09 09 7d 0d 0d 09 |tderr);.|....}...|
|00000d10| 09 09 09 72 65 74 75 72 | 6e 20 28 74 72 75 65 29 |...retur|n (true)|
|00000d20| 3b 0d 09 09 09 7d 0d 0d | 09 09 09 66 49 74 65 6d |;....}..|...fItem|
|00000d30| 49 6e 64 65 78 20 3d 20 | 73 61 76 65 64 49 74 65 |Index = |savedIte|
|00000d40| 6d 49 6e 64 65 78 3b 09 | 09 2f 2f 20 52 65 73 74 |mIndex;.|.// Rest|
|00000d50| 6f 72 65 0d 09 09 7d 0d | 09 7d 0d 0d 09 69 66 20 |ore...}.|.}...if |
|00000d60| 28 62 75 6d 70 52 65 63 | 75 72 73 69 6f 6e 43 6f |(bumpRec|ursionCo|
|00000d70| 75 6e 74 29 0d 09 09 2d | 2d 66 52 65 63 75 72 73 |unt)...-|-fRecurs|
|00000d80| 69 6f 6e 43 6f 75 6e 74 | 3b 0d 0d 09 72 65 74 75 |ionCount|;...retu|
|00000d90| 72 6e 20 28 66 61 6c 73 | 65 29 3b 0d 7d 0d 0d 0d |rn (fals|e);.}...|
|00000da0| 2f 2a 0d 2a 2a 09 46 6c | 75 73 68 20 61 6e 79 20 |/*.**.Fl|ush any |
|00000db0| 74 6f 6b 65 6e 73 20 62 | 65 69 6e 67 20 68 65 6c |tokens b|eing hel|
|00000dc0| 64 20 62 79 20 61 6e 79 | 20 70 61 72 73 65 20 73 |d by any| parse s|
|00000dd0| 74 61 74 65 73 20 6f 6e | 20 74 68 65 20 73 74 61 |tates on| the sta|
|00000de0| 63 6b 2e 20 20 44 6f 20 | 74 68 69 73 20 62 79 0d |ck. Do |this by.|
|00000df0| 2a 2a 20 70 61 72 73 69 | 6e 67 20 61 20 74 6f 6b |** parsi|ng a tok|
|00000e00| 65 6e 20 6f 66 20 74 79 | 70 65 20 6b 53 4c 65 78 |en of ty|pe kSLex|
|00000e10| 5f 46 6c 75 73 68 2e 20 | 20 42 65 63 61 75 73 65 |_Flush. | Because|
|00000e20| 20 74 68 69 73 20 70 61 | 72 73 65 20 75 73 75 61 | this pa|rse usua|
|00000e30| 6c 6c 79 20 66 61 69 6c | 73 2c 0d 2a 2a 20 70 72 |lly fail|s,.** pr|
|00000e40| 65 73 65 72 76 65 20 61 | 6e 64 20 72 65 73 74 6f |eserve a|nd resto|
|00000e50| 72 65 20 66 52 65 63 75 | 72 73 69 6f 6e 43 6f 75 |re fRecu|rsionCou|
|00000e60| 6e 74 20 61 72 6f 75 6e | 64 20 74 68 65 20 63 61 |nt aroun|d the ca|
|00000e70| 6c 6c 20 74 6f 20 50 61 | 72 73 65 28 29 2e 20 20 |ll to Pa|rse(). |
|00000e80| 52 65 74 75 72 6e 0d 2a | 2a 20 74 72 75 65 20 62 |Return.*|* true b|
|00000e90| 65 63 61 75 73 65 20 77 | 65 20 64 6f 6e 27 74 20 |ecause w|e don't |
|00000ea0| 63 61 72 65 2e 0d 2a 2f | 0d 2f 2f b5 20 20 20 50 |care..*/|.//. P|
|00000eb0| 61 72 73 65 72 3a 3a 50 | 61 72 73 65 0d 23 70 72 |arser::P|arse.#pr|
|00000ec0| 61 67 6d 61 20 73 65 67 | 6d 65 6e 74 20 50 61 72 |agma seg|ment Par|
|00000ed0| 73 65 72 0d 42 6f 6f 6c | 65 61 6e 20 50 61 72 73 |ser.Bool|ean Pars|
|00000ee0| 65 72 3a 3a 50 61 72 73 | 65 28 29 0d 7b 0d 09 2f |er::Pars|e().{../|
|00000ef0| 2f 73 68 6f 72 74 20 63 | 6f 75 6e 74 20 3d 20 66 |/short c|ount = f|
|00000f00| 52 65 63 75 72 73 69 6f | 6e 43 6f 75 6e 74 3b 0d |Recursio|nCount;.|
|00000f10| 0d 09 50 61 72 73 65 28 | 26 67 4c 65 78 46 6c 75 |..Parse(|&gLexFlu|
|00000f20| 73 68 29 3b 0d 09 2f 2f | 66 52 65 63 75 72 73 69 |sh);..//|fRecursi|
|00000f30| 6f 6e 43 6f 75 6e 74 20 | 3d 20 63 6f 75 6e 74 3b |onCount |= count;|
|00000f40| 0d 09 72 65 74 75 72 6e | 20 28 74 72 75 65 29 3b |..return| (true);|
|00000f50| 0d 7d 0d 0d 0d 0d 2f 2f | b5 20 20 20 50 61 72 73 |.}....//|. Pars|
|00000f60| 65 72 3a 3a 46 69 6e 64 | 48 61 6e 64 6c 65 0d 23 |er::Find|Handle.#|
|00000f70| 70 72 61 67 6d 61 20 73 | 65 67 6d 65 6e 74 20 50 |pragma s|egment P|
|00000f80| 61 72 73 65 72 0d 73 68 | 6f 72 74 20 50 61 72 73 |arser.sh|ort Pars|
|00000f90| 65 72 3a 3a 46 69 6e 64 | 48 61 6e 64 6c 65 28 73 |er::Find|Handle(s|
|00000fa0| 68 6f 72 74 20 61 54 6f | 6b 65 6e 54 79 70 65 2c |hort aTo|kenType,|
|00000fb0| 20 63 6f 6e 73 74 20 73 | 68 6f 72 74 20 2a 61 53 | const s|hort *aS|
|00000fc0| 74 61 63 6b 44 65 73 63 | 72 69 70 74 69 6f 6e 29 |tackDesc|ription)|
|00000fd0| 20 63 6f 6e 73 74 0d 7b | 0d 09 69 6e 74 20 73 74 | const.{|..int st|
|00000fe0| 61 63 6b 44 65 70 74 68 | 20 3d 20 44 65 70 74 68 |ackDepth| = Depth|
|00000ff0| 28 29 3b 0d 0d 09 2f 2f | 20 61 53 74 61 63 6b 44 |();...//| aStackD|
|00001000| 65 73 63 72 69 70 74 69 | 6f 6e 20 69 73 20 6f 66 |escripti|on is of|
|00001010| 20 74 68 65 20 66 6f 72 | 6d 0d 09 2f 2f 09 09 3c | the for|m..//..<|
|00001020| 76 61 6c 75 65 3e 20 3c | 74 6f 6b 65 6e 54 79 70 |value> <|tokenTyp|
|00001030| 65 3e 20 3c 6e 3e 20 7b | 3c 6e 3e 2a 3c 76 3e 7d |e> <n> {|<n>*<v>}|
|00001040| 0d 09 2f 2f 20 77 69 74 | 68 20 74 68 65 20 74 65 |..// wit|h the te|
|00001050| 72 6d 69 6e 61 74 69 6e | 67 20 63 6f 6e 64 69 74 |rminatin|g condit|
|00001060| 69 6f 6e 20 6f 66 0d 09 | 2f 2f 09 09 28 3f 20 3c |ion of..|//..(? <|
|00001070| 20 30 29 20 3c 69 67 6e | 6f 72 65 64 3e 20 30 0d | 0) <ign|ored> 0.|
|00001080| 09 66 6f 72 20 28 3b 3b | 29 20 7b 0d 09 09 73 68 |.for (;;|) {...sh|
|00001090| 6f 72 74 20 61 56 61 6c | 75 65 20 3d 20 2a 61 53 |ort aVal|ue = *aS|
|000010a0| 74 61 63 6b 44 65 73 63 | 72 69 70 74 69 6f 6e 2b |tackDesc|ription+|
|000010b0| 2b 3b 0d 09 09 73 68 6f | 72 74 20 61 54 79 70 65 |+;...sho|rt aType|
|000010c0| 20 3d 20 2a 61 53 74 61 | 63 6b 44 65 73 63 72 69 | = *aSta|ckDescri|
|000010d0| 70 74 69 6f 6e 2b 2b 3b | 0d 09 09 73 68 6f 72 74 |ption++;|...short|
|000010e0| 20 6e 49 74 65 6d 73 20 | 3d 20 2a 61 53 74 61 63 | nItems |= *aStac|
|000010f0| 6b 44 65 73 63 72 69 70 | 74 69 6f 6e 2b 2b 3b 0d |kDescrip|tion++;.|
|00001100| 09 09 63 6f 6e 73 74 20 | 73 68 6f 72 74 20 2a 6e |..const |short *n|
|00001110| 65 78 74 44 65 73 63 72 | 69 70 74 69 6f 6e 20 3d |extDescr|iption =|
|00001120| 20 26 61 53 74 61 63 6b | 44 65 73 63 72 69 70 74 | &aStack|Descript|
|00001130| 69 6f 6e 5b 6e 49 74 65 | 6d 73 5d 3b 0d 0d 09 09 |ion[nIte|ms];....|
|00001140| 2f 2f 20 4d 61 74 63 68 | 20 74 68 65 20 74 6f 6b |// Match| the tok|
|00001150| 65 6e 20 74 79 70 65 20 | 66 69 72 73 74 2c 20 61 |en type |first, a|
|00001160| 73 20 74 68 61 74 20 69 | 73 20 63 68 65 61 70 65 |s that i|s cheape|
|00001170| 73 74 2e 20 20 49 6e 20 | 63 61 73 65 20 6f 66 0d |st. In |case of.|
|00001180| 09 09 2f 2f 20 6d 69 73 | 6d 61 74 63 68 2c 20 63 |..// mis|match, c|
|00001190| 68 65 63 6b 20 6e 49 74 | 65 6d 73 20 66 6f 72 20 |heck nIt|ems for |
|000011a0| 30 2e 20 20 49 66 20 69 | 74 20 69 73 20 30 2c 20 |0. If i|t is 0, |
|000011b0| 74 68 65 6e 20 74 68 69 | 73 20 77 61 73 20 74 68 |then thi|s was th|
|000011c0| 65 0d 09 09 2f 2f 20 6c | 61 73 74 20 68 61 6e 64 |e...// l|ast hand|
|000011d0| 6c 65 20 64 65 73 63 72 | 69 70 74 69 6f 6e 2e 20 |le descr|iption. |
|000011e0| 20 4e 6f 74 65 20 74 68 | 61 74 20 69 66 20 74 68 | Note th|at if th|
|000011f0| 69 73 20 69 73 20 74 68 | 65 20 6c 61 73 74 20 68 |is is th|e last h|
|00001200| 61 6e 64 6c 65 0d 09 09 | 2f 2f 20 64 65 73 63 72 |andle...|// descr|
|00001210| 69 70 74 69 6f 6e 20 62 | 75 74 20 74 68 61 74 20 |iption b|ut that |
|00001220| 74 68 65 20 74 6f 6b 65 | 6e 20 74 79 70 65 73 20 |the toke|n types |
|00001230| 6d 61 74 63 68 65 64 2c | 20 74 68 61 74 20 74 68 |matched,| that th|
|00001240| 65 20 6c 6f 6f 70 0d 09 | 09 2f 2f 20 62 65 6c 6f |e loop..|.// belo|
|00001250| 77 20 77 69 6c 6c 20 72 | 65 74 75 72 6e 20 74 72 |w will r|eturn tr|
|00001260| 75 65 2e 20 20 43 6f 6e | 73 65 71 75 65 6e 74 6c |ue. Con|sequentl|
|00001270| 79 2c 20 74 68 65 72 65 | 20 69 73 20 6e 6f 20 6e |y, there| is no n|
|00001280| 65 65 64 20 66 6f 72 20 | 61 0d 09 09 2f 2f 20 73 |eed for |a...// s|
|00001290| 65 70 61 72 61 74 65 20 | 63 68 65 63 6b 0d 0d 09 |eparate |check...|
|000012a0| 09 69 66 20 28 61 56 61 | 6c 75 65 20 3c 20 30 20 |.if (aVa|lue < 0 |
|000012b0| 26 26 20 6e 49 74 65 6d | 73 20 3d 3d 20 30 29 0d |&& nItem|s == 0).|
|000012c0| 09 09 09 72 65 74 75 72 | 6e 20 28 61 56 61 6c 75 |...retur|n (aValu|
|000012d0| 65 29 3b 0d 0d 09 09 69 | 66 20 28 61 54 6f 6b 65 |e);....i|f (aToke|
|000012e0| 6e 54 79 70 65 20 3d 3d | 20 61 54 79 70 65 20 7c |nType ==| aType ||
|000012f0| 7c 20 61 54 79 70 65 20 | 3c 20 30 29 20 7b 0d 09 || aType |< 0) {..|
|00001300| 09 09 2f 2f 20 61 53 74 | 61 63 6b 44 65 73 63 72 |..// aSt|ackDescr|
|00001310| 69 70 74 69 6f 6e 20 70 | 6f 69 6e 74 73 20 74 6f |iption p|oints to|
|00001320| 20 74 68 65 20 64 65 65 | 70 65 73 74 20 65 6e 74 | the dee|pest ent|
|00001330| 72 79 20 69 6e 20 74 68 | 65 20 73 74 61 63 6b 2e |ry in th|e stack.|
|00001340| 0d 09 09 09 2f 2f 20 43 | 6f 6e 73 65 71 75 65 6e |....// C|onsequen|
|00001350| 74 6c 79 2c 20 73 74 61 | 72 74 20 69 6e 64 65 78 |tly, sta|rt index|
|00001360| 69 6e 67 20 66 72 6f 6d | 20 74 68 65 20 62 6f 74 |ing from| the bot|
|00001370| 74 6f 6d 20 74 6f 20 74 | 68 65 20 74 6f 70 2e 0d |tom to t|he top..|
|00001380| 09 09 09 69 66 20 28 6e | 49 74 65 6d 73 20 3c 3d |...if (n|Items <=|
|00001390| 20 73 74 61 63 6b 44 65 | 70 74 68 29 20 7b 0d 09 | stackDe|pth) {..|
|000013a0| 09 09 09 42 6f 6f 6c 65 | 61 6e 20 6d 61 74 63 68 |...Boole|an match|
|000013b0| 65 64 20 3d 20 74 72 75 | 65 3b 0d 0d 09 09 09 09 |ed = tru|e;......|
|000013c0| 2f 2f 20 43 68 65 63 6b | 20 6f 75 74 20 74 68 65 |// Check| out the|
|000013d0| 20 76 61 6c 75 65 73 2e | 0d 09 09 09 09 77 68 69 | values.|.....whi|
|000013e0| 6c 65 20 28 6d 61 74 63 | 68 65 64 20 26 26 20 6e |le (matc|hed && n|
|000013f0| 49 74 65 6d 73 20 3e 20 | 30 29 20 7b 0d 09 09 09 |Items > |0) {....|
|00001400| 09 09 6d 61 74 63 68 65 | 64 20 3d 20 28 50 69 63 |..matche|d = (Pic|
|00001410| 6b 28 2d 2d 6e 49 74 65 | 6d 73 29 2d 3e 54 79 70 |k(--nIte|ms)->Typ|
|00001420| 65 28 29 20 3d 3d 20 2a | 61 53 74 61 63 6b 44 65 |e() == *|aStackDe|
|00001430| 73 63 72 69 70 74 69 6f | 6e 29 20 7c 7c 20 28 2a |scriptio|n) || (*|
|00001440| 61 53 74 61 63 6b 44 65 | 73 63 72 69 70 74 69 6f |aStackDe|scriptio|
|00001450| 6e 20 3c 20 30 29 3b 0d | 09 09 09 09 09 2b 2b 61 |n < 0);.|.....++a|
|00001460| 53 74 61 63 6b 44 65 73 | 63 72 69 70 74 69 6f 6e |StackDes|cription|
|00001470| 3b 0d 09 09 09 09 7d 0d | 0d 09 09 09 09 2f 2f 20 |;.....}.|.....// |
|00001480| 49 66 20 74 68 65 20 73 | 74 61 63 6b 20 6d 61 74 |If the s|tack mat|
|00001490| 63 68 65 64 2c 20 72 65 | 74 75 72 6e 20 74 68 65 |ched, re|turn the|
|000014a0| 20 76 61 6c 75 65 0d 09 | 09 09 09 69 66 20 28 6d | value..|...if (m|
|000014b0| 61 74 63 68 65 64 29 0d | 09 09 09 09 09 72 65 74 |atched).|.....ret|
|000014c0| 75 72 6e 20 28 61 56 61 | 6c 75 65 29 3b 0d 09 09 |urn (aVa|lue);...|
|000014d0| 09 7d 0d 09 09 7d 0d 0d | 09 09 2f 2f 20 54 68 65 |.}...}..|..// The|
|000014e0| 20 73 74 61 63 6b 20 63 | 6f 6e 74 65 6e 74 73 20 | stack c|ontents |
|000014f0| 64 69 64 20 6e 6f 74 20 | 6d 61 74 63 68 20 74 68 |did not |match th|
|00001500| 65 20 68 61 6e 64 6c 65 | 20 61 6e 64 20 74 68 65 |e handle| and the|
|00001510| 72 65 20 61 72 65 20 6d | 6f 72 65 0d 09 09 2f 2f |re are m|ore...//|
|00001520| 20 68 61 6e 64 6c 65 73 | 20 74 6f 20 63 68 65 63 | handles| to chec|
|00001530| 6b 2e 20 20 41 64 76 61 | 6e 63 65 20 74 6f 20 74 |k. Adva|nce to t|
|00001540| 68 65 20 6e 65 78 74 20 | 68 61 6e 64 6c 65 20 64 |he next |handle d|
|00001550| 65 73 63 72 69 70 74 69 | 6f 6e 0d 09 09 61 53 74 |escripti|on...aSt|
|00001560| 61 63 6b 44 65 73 63 72 | 69 70 74 69 6f 6e 20 3d |ackDescr|iption =|
|00001570| 20 6e 65 78 74 44 65 73 | 63 72 69 70 74 69 6f 6e | nextDes|cription|
|00001580| 3b 0d 09 7d 0d 7d 0d 0d | 0d 2f 2f b5 20 20 20 50 |;..}.}..|.//. P|
|00001590| 61 72 73 65 72 3a 3a 44 | 75 6d 70 53 74 61 63 6b |arser::D|umpStack|
|000015a0| 0d 23 70 72 61 67 6d 61 | 20 73 65 67 6d 65 6e 74 |.#pragma| segment|
|000015b0| 20 50 61 72 73 65 72 0d | 76 6f 69 64 20 50 61 72 | Parser.|void Par|
|000015c0| 73 65 72 3a 3a 44 75 6d | 70 53 74 61 63 6b 28 53 |ser::Dum|pStack(S|
|000015d0| 74 64 46 69 6c 65 20 26 | 61 46 69 6c 65 29 0d 7b |tdFile &|aFile).{|
|000015e0| 0d 09 61 46 69 6c 65 2e | 50 75 74 73 28 22 44 75 |..aFile.|Puts("Du|
|000015f0| 6d 70 20 6f 66 20 70 61 | 72 73 65 20 73 74 61 63 |mp of pa|rse stac|
|00001600| 6b 22 29 3b 0d 09 61 46 | 69 6c 65 2e 50 75 74 73 |k");..aF|ile.Puts|
|00001610| 28 22 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |("------|--------|
|00001620| 2d 2d 2d 2d 2d 5c 6e 22 | 29 3b 0d 09 66 6f 72 20 |-----\n"|);..for |
|00001630| 28 69 6e 74 20 69 20 3d | 20 30 3b 20 69 20 3c 20 |(int i =| 0; i < |
|00001640| 44 65 70 74 68 28 29 3b | 20 69 2b 2b 29 20 7b 0d |Depth();| i++) {.|
|00001650| 09 09 73 68 6f 72 74 20 | 61 54 79 70 65 20 3d 20 |..short |aType = |
|00001660| 41 74 28 69 29 2d 3e 54 | 79 70 65 28 29 3b 0d 09 |At(i)->T|ype();..|
|00001670| 09 63 68 61 72 20 6d 61 | 72 6b 20 3d 20 28 69 20 |.char ma|rk = (i |
|00001680| 3d 3d 20 66 49 74 65 6d | 49 6e 64 65 78 29 20 3f |== fItem|Index) ?|
|00001690| 20 27 2a 27 20 3a 20 27 | 20 27 3b 0d 0d 09 09 61 | '*' : '| ';....a|
|000016a0| 46 69 6c 65 2e 50 72 69 | 6e 74 66 28 22 25 63 20 |File.Pri|ntf("%c |
|000016b0| 25 32 64 20 25 2d 32 30 | 73 20 28 25 64 29 5c 6e |%2d %-20|s (%d)\n|
|000016c0| 22 2c 20 6d 61 72 6b 2c | 20 69 2c 20 4e 61 6d 65 |", mark,| i, Name|
|000016d0| 4f 66 28 61 54 79 70 65 | 29 2c 20 61 54 79 70 65 |Of(aType|), aType|
|000016e0| 29 3b 0d 09 7d 0d 09 61 | 46 69 6c 65 2e 46 6c 75 |);..}..a|File.Flu|
|000016f0| 73 68 28 29 3b 0d 7d 0d | 0d 0d 0d 23 64 65 66 69 |sh();.}.|...#defi|
|00001700| 6e 65 20 43 41 53 45 28 | 61 29 09 09 63 61 73 65 |ne CASE(|a)..case|
|00001710| 20 61 3a 20 72 65 74 75 | 72 6e 20 28 23 61 29 3b | a: retu|rn (#a);|
|00001720| 0d 23 70 72 61 67 6d 61 | 20 73 65 67 6d 65 6e 74 |.#pragma| segment|
|00001730| 20 50 61 72 73 65 72 0d | 63 6f 6e 73 74 20 63 68 | Parser.|const ch|
|00001740| 61 72 20 2a 50 61 72 73 | 65 72 3a 3a 4e 61 6d 65 |ar *Pars|er::Name|
|00001750| 4f 66 28 73 68 6f 72 74 | 20 61 54 79 70 65 29 0d |Of(short| aType).|
|00001760| 7b 0d 09 73 77 69 74 63 | 68 20 28 61 54 79 70 65 |{..switc|h (aType|
|00001770| 29 20 7b 0d 09 09 2f 2f | c4 2d 0d 09 43 41 53 45 |) {...//|.-..CASE|
|00001780| 28 6b 53 4c 65 78 5f 45 | 4f 46 29 0d 09 43 41 53 |(kSLex_E|OF)..CAS|
|00001790| 45 28 6b 53 4c 65 78 5f | 49 64 29 0d 09 43 41 53 |E(kSLex_|Id)..CAS|
|000017a0| 45 28 6b 53 4c 65 78 5f | 56 61 6c 75 65 29 0d 09 |E(kSLex_|Value)..|
|000017b0| 43 41 53 45 28 6b 53 4c | 65 78 5f 4c 50 61 72 65 |CASE(kSL|ex_LPare|
|000017c0| 6e 29 0d 09 43 41 53 45 | 28 6b 53 4c 65 78 5f 52 |n)..CASE|(kSLex_R|
|000017d0| 50 61 72 65 6e 29 0d 09 | 43 41 53 45 28 6b 53 4c |Paren)..|CASE(kSL|
|000017e0| 65 78 5f 4c 42 72 61 63 | 65 29 0d 09 43 41 53 45 |ex_LBrac|e)..CASE|
|000017f0| 28 6b 53 4c 65 78 5f 52 | 42 72 61 63 65 29 0d 09 |(kSLex_R|Brace)..|
|00001800| 43 41 53 45 28 6b 53 4c | 65 78 5f 4c 43 75 72 6c |CASE(kSL|ex_LCurl|
|00001810| 79 29 0d 09 43 41 53 45 | 28 6b 53 4c 65 78 5f 52 |y)..CASE|(kSLex_R|
|00001820| 43 75 72 6c 79 29 0d 09 | 43 41 53 45 28 6b 53 4c |Curly)..|CASE(kSL|
|00001830| 65 78 5f 4f 70 29 0d 09 | 43 41 53 45 28 6b 53 4c |ex_Op)..|CASE(kSL|
|00001840| 65 78 5f 4f 70 41 73 73 | 69 67 6e 29 0d 09 43 41 |ex_OpAss|ign)..CA|
|00001850| 53 45 28 6b 53 4c 65 78 | 5f 43 6f 6c 6f 6e 29 0d |SE(kSLex|_Colon).|
|00001860| 09 43 41 53 45 28 6b 53 | 4c 65 78 5f 43 6c 61 73 |.CASE(kS|Lex_Clas|
|00001870| 73 43 6f 6c 6f 6e 29 0d | 09 43 41 53 45 28 6b 53 |sColon).|.CASE(kS|
|00001880| 4c 65 78 5f 53 65 6d 69 | 43 6f 6c 6f 6e 29 0d 09 |Lex_Semi|Colon)..|
|00001890| 43 41 53 45 28 6b 53 4c | 65 78 5f 43 6f 6d 6d 61 |CASE(kSL|ex_Comma|
|000018a0| 29 0d 09 43 41 53 45 28 | 6b 53 4c 65 78 5f 45 6c |)..CASE(|kSLex_El|
|000018b0| 6c 69 70 73 69 73 29 0d | 09 43 41 53 45 28 6b 53 |lipsis).|.CASE(kS|
|000018c0| 4c 65 78 5f 43 6f 6d 6d | 65 6e 74 29 0d 09 43 41 |Lex_Comm|ent)..CA|
|000018d0| 53 45 28 6b 53 4c 65 78 | 5f 4e 65 77 4c 69 6e 65 |SE(kSLex|_NewLine|
|000018e0| 29 0d 09 43 41 53 45 28 | 6b 53 4c 65 78 5f 4e 75 |)..CASE(|kSLex_Nu|
|000018f0| 6c 6c 29 0d 09 43 41 53 | 45 28 6b 53 4c 65 78 5f |ll)..CAS|E(kSLex_|
|00001900| 50 6f 75 6e 64 4c 69 6e | 65 29 0d 09 43 41 53 45 |PoundLin|e)..CASE|
|00001910| 28 6b 53 4c 65 78 5f 42 | 72 65 61 6b 29 0d 09 43 |(kSLex_B|reak)..C|
|00001920| 41 53 45 28 6b 53 4c 65 | 78 5f 43 61 73 65 29 0d |ASE(kSLe|x_Case).|
|00001930| 09 43 41 53 45 28 6b 53 | 4c 65 78 5f 44 65 66 61 |.CASE(kS|Lex_Defa|
|00001940| 75 6c 74 29 0d 09 43 41 | 53 45 28 6b 53 4c 65 78 |ult)..CA|SE(kSLex|
|00001950| 5f 44 65 63 6c 29 0d 09 | 43 41 53 45 28 6b 53 4c |_Decl)..|CASE(kSL|
|00001960| 65 78 5f 44 65 63 6c 4f | 70 65 72 61 74 6f 72 29 |ex_DeclO|perator)|
|00001970| 0d 09 43 41 53 45 28 6b | 53 4c 65 78 5f 44 6f 29 |..CASE(k|SLex_Do)|
|00001980| 0d 09 43 41 53 45 28 6b | 53 4c 65 78 5f 45 6c 73 |..CASE(k|SLex_Els|
|00001990| 65 29 0d 09 43 41 53 45 | 28 6b 53 4c 65 78 5f 46 |e)..CASE|(kSLex_F|
|000019a0| 6f 72 29 0d 09 43 41 53 | 45 28 6b 53 4c 65 78 5f |or)..CAS|E(kSLex_|
|000019b0| 49 66 29 0d 09 43 41 53 | 45 28 6b 53 4c 65 78 5f |If)..CAS|E(kSLex_|
|000019c0| 53 74 72 75 63 74 29 0d | 09 43 41 53 45 28 6b 53 |Struct).|.CASE(kS|
|000019d0| 4c 65 78 5f 53 77 69 74 | 63 68 29 0d 09 43 41 53 |Lex_Swit|ch)..CAS|
|000019e0| 45 28 6b 53 4c 65 78 5f | 57 68 69 6c 65 29 0d 09 |E(kSLex_|While)..|
|000019f0| 43 41 53 45 28 6b 53 4c | 65 78 5f 50 75 62 6c 69 |CASE(kSL|ex_Publi|
|00001a00| 63 29 0d 0d 09 43 41 53 | 45 28 6b 53 4c 65 78 5f |c)...CAS|E(kSLex_|
|00001a10| 50 61 72 73 65 64 49 64 | 29 0d 09 43 41 53 45 28 |ParsedId|)..CASE(|
|00001a20| 6b 53 4c 65 78 5f 46 6c | 75 73 68 29 0d 09 43 41 |kSLex_Fl|ush)..CA|
|00001a30| 53 45 28 6b 53 4c 65 78 | 5f 43 6f 6e 74 65 78 74 |SE(kSLex|_Context|
|00001a40| 29 0d 0d 09 43 41 53 45 | 28 6b 53 50 72 73 5f 49 |)...CASE|(kSPrs_I|
|00001a50| 64 29 0d 09 43 41 53 45 | 28 6b 53 50 72 73 5f 53 |d)..CASE|(kSPrs_S|
|00001a60| 74 6d 74 4c 69 73 74 29 | 0d 09 43 41 53 45 28 6b |tmtList)|..CASE(k|
|00001a70| 53 50 72 73 5f 44 65 63 | 6c 4c 69 73 74 29 0d 09 |SPrs_Dec|lList)..|
|00001a80| 43 41 53 45 28 6b 53 50 | 72 73 5f 44 65 63 6c 54 |CASE(kSP|rs_DeclT|
|00001a90| 79 70 65 29 0d 09 43 41 | 53 45 28 6b 53 50 72 73 |ype)..CA|SE(kSPrs|
|00001aa0| 5f 53 74 6d 74 29 0d 09 | 43 41 53 45 28 6b 53 50 |_Stmt)..|CASE(kSP|
|00001ab0| 72 73 5f 44 65 63 6c 29 | 0d 09 43 41 53 45 28 6b |rs_Decl)|..CASE(k|
|00001ac0| 53 50 72 73 5f 44 6f 29 | 0d 09 43 41 53 45 28 6b |SPrs_Do)|..CASE(k|
|00001ad0| 53 50 72 73 5f 49 66 29 | 0d 09 43 41 53 45 28 6b |SPrs_If)|..CASE(k|
|00001ae0| 53 50 72 73 5f 45 6c 73 | 65 29 0d 09 43 41 53 45 |SPrs_Els|e)..CASE|
|00001af0| 28 6b 53 50 72 73 5f 46 | 6f 72 29 0d 09 43 41 53 |(kSPrs_F|or)..CAS|
|00001b00| 45 28 6b 53 50 72 73 5f | 53 74 72 75 63 74 29 0d |E(kSPrs_|Struct).|
|00001b10| 09 43 41 53 45 28 6b 53 | 50 72 73 5f 53 77 69 74 |.CASE(kS|Prs_Swit|
|00001b20| 63 68 29 0d 09 43 41 53 | 45 28 6b 53 50 72 73 5f |ch)..CAS|E(kSPrs_|
|00001b30| 57 68 69 6c 65 29 0d 09 | 43 41 53 45 28 6b 53 50 |While)..|CASE(kSP|
|00001b40| 72 73 5f 45 78 70 72 29 | 0d 09 43 41 53 45 28 6b |rs_Expr)|..CASE(k|
|00001b50| 53 50 72 73 5f 44 65 63 | 6c 4f 70 65 72 61 74 6f |SPrs_Dec|lOperato|
|00001b60| 72 29 0d 09 43 41 53 45 | 28 6b 53 50 72 73 5f 4e |r)..CASE|(kSPrs_N|
|00001b70| 65 77 4c 69 6e 65 29 0d | 09 0d 09 64 65 66 61 75 |ewLine).|...defau|
|00001b80| 6c 74 3a 09 72 65 74 75 | 72 6e 20 28 22 3c 75 6e |lt:.retu|rn ("<un|
|00001b90| 6b 6e 6f 77 6e 20 74 6f | 6b 65 6e 3e 22 29 3b 0d |known to|ken>");.|
|00001ba0| 09 09 2f 2f c4 2b 0d 09 | 7d 0d 7d 0d 0d 0d 00 00 |..//.+..|}.}.....|
|00001bb0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00001bc0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00001bd0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00001be0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00001bf0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00001c00| 00 00 01 00 00 00 01 fa | 00 00 00 fa 00 00 00 4a |........|.......J|
|00001c10| 61 6c 44 61 74 61 08 6d | 61 74 68 2e 63 2e 6f 0e |alData.m|ath.c.o.|
|00001c20| 5f 66 69 78 65 78 63 65 | 70 74 69 6f 6e 73 04 4d |_fixexce|ptions.M|
|00001c30| 09 50 61 72 73 65 72 2e | 63 70 02 00 00 00 54 45 |.Parser.|cp....TE|
|00001c40| 58 54 4d 50 53 20 01 00 | ff ff ff ff 00 00 00 00 |XTMPS ..|........|
|00001c50| 00 00 54 45 58 54 4d 50 | 53 20 01 00 ff ff ff ff |..TEXTMP|S ......|
|00001c60| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00001c70| 00 00 a1 95 ef 36 00 00 | 1b 2e 00 00 02 44 63 6f |.....6..|.....Dco|
|00001c80| 70 79 73 69 67 6e 07 73 | 69 67 6e 6e 75 6d 04 66 |pysign.s|ignnum.f|
|00001c90| 61 62 73 09 72 65 6d 61 | 69 6e 64 65 72 04 74 61 |abs.rema|inder.ta|
|00001ca0| 6e 68 08 70 72 6f 63 65 | 78 69 74 04 65 78 70 31 |nh.proce|xit.exp1|
|00001cb0| 09 70 72 6f 63 65 6e 74 | 72 79 05 5f 73 65 61 6d |.procent|ry._seam|
|00001cc0| 04 73 69 6e 68 03 69 6e | 66 04 63 6f 73 68 03 65 |.sinh.in|f.cosh.e|
|00001cd0| 78 70 0c 5f 61 74 72 69 | 67 63 6f 6d 6d 6f 6e 03 |xp._atri|gcommon.|
|00001ce0| 6e 61 6e 0d 74 65 73 74 | 65 78 63 65 70 74 69 6f |nan.test|exceptio|
|00001cf0| 6e 04 61 73 69 6e 04 73 | 71 72 74 04 61 74 61 6e |n.asin.s|qrt.atan|
|00001d00| 00 00 00 48 00 09 4d 6f | 6e 61 63 6f 00 00 00 14 |...H..Mo|naco....|
|00001d10| 00 01 3b 04 00 0a 00 00 | 04 56 03 66 04 80 08 73 |..;.....|.V.f...s|
|00001d20| 00 00 00 14 00 01 00 06 | 00 04 00 27 00 02 01 76 |........|...'...v|
|00001d30| 01 fe 00 27 00 02 01 76 | 01 fe a6 22 0f 48 00 00 |...'...v|...".H..|
|00001d40| 0a b1 00 00 0a cf 00 00 | 0a 15 01 00 00 00 00 88 |........|........|
|00001d50| 00 05 00 00 01 93 00 00 | 01 a4 11 20 20 50 61 72 |........|... Par|
|00001d60| 73 65 72 3a 3a 49 50 61 | 72 73 65 72 00 00 03 ee |ser::IPa|rser....|
|00001d70| 00 00 03 ff 11 20 20 50 | 61 72 73 65 72 3a 3a 7e |..... P|arser::~|
|00001d80| 50 61 72 73 65 72 00 00 | 0e 2d 00 00 0e 3c 0f 20 |Parser..|.-...<. |
|00001d90| 20 50 61 72 73 65 72 3a | 3a 50 61 72 73 65 00 00 | Parser:|:Parse..|
|00001da0| 0e da 00 00 0e ee 15 20 | 20 50 61 72 73 65 72 3a |....... | Parser:|
|00001db0| 3a 46 69 6e 64 48 61 6e | 64 6c 65 00 00 00 15 0d |:FindHan|dle.....|
|00001dc0| 00 00 15 20 13 20 20 50 | 61 72 73 65 72 3a 3a 44 |... . P|arser::D|
|00001dd0| 75 6d 70 53 74 61 63 6b | 00 00 00 1e 00 27 00 02 |umpStack|.....'..|
|00001de0| 01 76 01 fe 00 27 00 02 | 01 76 01 fe 00 00 0a 15 |.v...'..|.v......|
|00001df0| 00 00 00 00 00 00 00 00 | 00 00 00 00 01 00 00 00 |........|........|
|00001e00| 01 fa 00 00 00 fa 00 00 | 00 4a 01 14 17 0c 12 5e |........|.J.....^|
|00001e10| 00 00 00 1c 00 4a 00 00 | 4d 50 53 52 00 02 00 0a |.....J..|MPSR....|
|00001e20| 03 ed ff ff 00 00 00 00 | 00 00 00 00 03 ef ff ff |........|........|
|00001e30| 00 00 00 4c 00 00 00 00 | 03 f0 ff ff 00 00 00 d8 |...L....|........|
|00001e40| 01 1a 31 98 00 00 00 00 | 00 00 00 00 00 00 00 00 |..1.....|........|
|00001e50| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00001e60| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00001e70| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
+--------+-------------------------+-------------------------+--------+--------+